/**
 * 
 */
Ext.ns("monitorApply");
monitorApply.init = function() {
	monitorApply.big_Id;// 定义选定的大类型的序列号
	monitorApply.big_Name;// 定义选定的大类型名称
	monitorApply.small_Id;// 定义选定的小类型的序列号
	monitorApply.small_Name;// 定义选定的大类型名称
	monitorApply.exam_Id;
	monitorApply.exam_Name;
	monitorApply.startTime;
	monitorApply.endTime;
	monitorApply.menuClick;
	monitorApply.cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
				header : '申办学校或单位',
				dataIndex : 'name',
				sortable : true
			}, {
				header : '考场地址',
				dataIndex : 'address',
				sortable : true
			}, {
				header : '考场资格号',
				dataIndex : 'identity',
				sortable : true
			}, {
				header : '监考人员分配状态',
				dataIndex : 'state',
				renderer : function(value, celmeta, record) {
					var a = record.data["state"];
					if (a == 0) {
						return "未分配";
					} else {
						return "已分配";
					}
				},
				sortable : true
			}]);
	monitorApply.lcm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
				header : '考试名称',
				dataIndex : 'l_name',
				sortable : true,
				width : 30
			}, {
				header : '考试时间',
				dataIndex : 'l_time',
				renderer : Ext.util.Format.dateRenderer('Y年m月d日   h时i分'),
				sortable : true,
				width : 20
			}]);
	monitorApply.lstore = new Ext.data.JsonStore({
				url : 'center/showExamListForMonitorAndExaminee.action',
				totalProperty : 'total',
				root : 'examValues',
				baseParams:{
					status:1//查询已经考场分配完成相关考试项目
				},
				fields : [{
							name : "l_id",
							mapping : 'examInfo_Id',
							type : 'int'
						}, {
							name : "l_name",
							mapping : 'examInfo_Name',
							type : 'string'
						}, {
							name : "l_time",
							mapping : 'examInfo_StartTime',
							type : 'string'
						}, {
							name : "l_etime",
							mapping : 'examInfo_EndTime',
							type : 'string'
						}]
			});
	monitorApply.store = new Ext.data.JsonStore({
				url : 'center/showPositionListForMonitor.action',
				totalProperty : 'total',
				root : 'positions',
				fields : [{
							name : "id",
							mapping : 'id',
							type : 'int'
						}, {
							name : "name",
							mapping : 'name',
							type : 'string'
						}, {
							name : "address",
							mapping : 'unit_Name',
							type : 'string'
						}, {
							name : "unit_Id",
							mapping : 'unit_Id',
							type : 'string'
						}, {
							name : "identity",
							mapping : 'identity',
							type : 'string'
						}, {
							name : "state",
							mapping : 'state',
							type : 'string'
						}]
			});

	monitorApply.BigTypes = new Ext.data.JsonStore({
				url : 'public/showBigList.action',
				totalProperty : 'total',
				root : 'bigtypes',
				fields : [{
							name : "big_Id",
							type : 'int'
						}, {
							name : "big_Name",
							type : 'string'
						}]
			});
	monitorApply.SmallTypes = new Ext.data.JsonStore({
				url : 'public/showSmallList.action',
				totalProperty : 'total',
				root : 'smalltypes',
				baseParams : {
					start : 0
				},
				fields : [{
							name : "small_Id",
							mapping : 'small_Id',
							type : 'int'
						}, {
							name : "small_Name",
							mapping : 'small_Name',
							type : 'string'
						}]
			});
	monitorApply.LPanel = new Ext.grid.GridPanel({
				columnWidth : .35,
				cm : monitorApply.lcm,
				store : monitorApply.lstore,
				frame : true,
				loadMask : true,
				height : 480,
				autoScroll:true,
				viewConfig : {
					columnsText : '选择显示列',
					forceFit : true
				},
				tbar : new Ext.Toolbar(['-', {
							id : 'monitorApply_search_bigType',
							fieldLabel : '考试类型',
							allowBlank : false,
							emptyText : '请选择类型名查询',
							blankText : '对不起，请选择考试类型',
							xtype : 'combo',
							mode : 'remote',
							triggerAction : 'all',
							valueField : 'big_Id',
							displayField : 'big_Name',
							pageSize : 8,
							width : 120,
							minListWidth : 300,
							store : monitorApply.BigTypes
						}, '-', {
							id : 'monitorApply_search_smallType',
							fieldLabel : '考试类型细节',
							allowBlank : false,
							emptyText : '请选择类型细节',
							blankText : '对不起，请选择类型细节进行查询',
							name : 'examValue.exam_Type',
							xtype : 'combo',
							mode : 'local',
							triggerAction : 'all',
							valueField : 'small_Id',
							displayField : 'small_Name',
							pageSize : 8,
							width : 120,
							minListWidth : 300,
							store : monitorApply.SmallTypes
						}, '-', {
							text : '列显示未分配',
							handler : function() {
								monitorApply.lstore.load({
											params : {
												state : 1
											}
										});
							}
						}])
			});
	monitorApply.RPanel = new Ext.grid.GridPanel({
		columnWidth : .65,
		cm : monitorApply.cm,
		frame : true,
		store : monitorApply.store,
		loadMask : true,
		autoScroll:true,
		height : 480,
		viewConfig : {
			columnsText : '选择显示列',
			forceFit : true
		},
		tbar : {
			xtype : 'toolbar',
			autoWidth : true,
			forceLayout : true,
			items : ['-', {
				text : '重新安排',
				handler : function() {
					monitorApply.store.removeAll();
					Ext.Ajax.request({
								url : 'center/clearSessionForMonitor.action',
								method : 'post',
								success : function(response) {
									var obj = Ext.decode(response.responseText);
									if (obj.success == false) {
									} else {
									}
								},
								failure : function(response) {
									Ext.Msg.alert("错误", "服务器连接失败！");
								}
							});
				}
			}, "-", {
				text : "自动分配监考人员",
				handler : function() {
					Ext.Ajax.request({
								url : 'center/autoArrangeForMonitor.action',
								method : 'post',
								params : {
									exam_Id : monitorApply.exam_Id,
									startTime : monitorApply.startTime,
									endTime : monitorApply.endTime
								},
								success : function(response) {
									var obj = Ext.decode(response.responseText);
									if (obj.success == false) {
										Ext.Msg.alert("提示", obj.msg);
									} else {
										Ext.each(monitorApply.store.getRange(),
												function(item) {
													item.set("state", "已分配");
												});
										Ext.getCmp("monitorApply_State")
											.setValue("自动分配监考人员已经完成");
										Ext.Msg.alert("提示", obj.msg);
									}
								},
								failure : function(response) {
									Ext.Msg.alert("错误", "服务器连接失败！");
								}
							});
				}
			}, '-', {
				text : '总分配完成确认',
				handler : function() {
					var result = true;
					Ext.each(monitorApply.store.getRange(), function(item) {
								if (item.data.state != "已分配") {
									result = false;
								}
							});
					if (result = true) {
						Ext.Ajax.request({
							url : 'center/confirmArrangeForMonitor.action',
							method : 'post',
							params : {
								exam_Id : monitorApply.exam_Id,
								startTime : monitorApply.startTime
							},
							success : function(response) {
								var obj = Ext.decode(response.responseText);
								if (obj.success == false) {
									Ext.Msg.alert("提示", obj.msg);
								} else {
									Ext.Msg.alert("提示", obj.msg);
									monitorApply.store.removeAll();
									Ext.getCmp("monitorApply_State")
											.setValue("总分配已经完成");
									Ext.Ajax.request({
										url : 'center/clearSessionForMonitor.action',
										method : 'post',
										success : function(response) {
										},
										failure : function(response) {
											Ext.Msg.alert("错误", "服务器连接失败！");
										}
									});
								}
							},
							failure : function(response) {
								Ext.Msg.alert("错误", "服务器连接失败！");
							}
						});
					} else {
						Ext.Msg.show({
									title : '错误提示',
									msg : '对不起,有考场没有分配监考人员，请仔细检查后提交分配结果！',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.WARNING
								});
					}
				}
			}, '->', "状态栏:", {
				id : 'monitorApply_State',
				xtype : 'displayfield',
				value : "未进行如何操作"
			}]
		}
	});
	monitorApply.Main = new Ext.Panel({
				title : '监考人员安排',
				id : 'monitorApplyMainPanel',
				deferredRender : true,
				closeAction : 'hide',
				cm : monitorApply.cm,
				store : monitorApply.store,
				loadMask : true,
				autoWidth : true,
				closable : true,
				layout : 'column',
				viewConfig : {
					forceFit : true
				},
				items : [monitorApply.LPanel, monitorApply.RPanel]
			});
	Ext.getCmp("monitorApply_search_bigType").on('select', function(combo) {
				monitorApply.SmallTypes.load({
							params : {
								big_Id : combo.getValue(),
								limit : 10
							}
						});
			});
	Ext.getCmp("monitorApply_search_smallType").on('select', function(combo) {
				monitorApply.lstore.load({
							params : {
								small_Id : combo.getValue(),
								state : 0
							}
						});
			});
	monitorApply.LPanel.on('rowdblclick', function(grid, rowindex, event) {
				Ext.Ajax.request({
							url : 'center/clearSessionForMonitor.action',
							method : 'post',
							success : function(response) {
								var obj = Ext.decode(response.responseText);
								if (obj.success == false) {
								} else {
								}
							},
							failure : function(response) {
								Ext.Msg.alert("错误", "服务器连接失败！");
							}
						});
				var record = grid.getStore().getAt(rowindex);
				monitorApply.startTime = record.get("l_time");
				monitorApply.endTime = record.get("l_etime");
				monitorApply.exam_Id = record.get("l_id");
				monitorApply.store.load({
							params : {
								exam_Id : monitorApply.exam_Id
							}
						});
			});
	monitorApply.menu = new Ext.menu.Menu({
				id : 'monitorApply_Menu',
				items : [{
					id : 'monitorApplyMenu',
					handler : function() {
						monitorPanelApply.Main.show();
						monitorPanelApply.lstore.load({
									params : {
										startTime : monitorApply.startTime,
										endTime : monitorApply.endTime,
										unit_Id : monitorApply.menuClick
												.get("unit_Id")
									}
								});
					}
				}]
			});
	monitorApply.RPanel.on("rowcontextmenu", function(grid, rowIndex, e) {
				e.preventDefault();
				monitorApply.RPanel.getSelectionModel().selectRow(rowIndex);
				monitorApply.menu.showAt(e.getXY());
				monitorApply.menuClick = monitorApply.RPanel
						.getSelectionModel().getSelected(rowIndex);
				Ext.getCmp("monitorApplyMenu").setText("'"
						+ monitorApply.menuClick.get("name") + "'考场安排");
			});
};
Ext.onReady(monitorApply.init);